DUA3:<000000>KITINSTAL.036;1
 
$! KITINSTAL.COM
$! COPYRIGHT (C) 1987 BY
$! DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
$! ALL RIGHTS RESERVED.
$!
$! THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
$! ONLY  IN  ACCORDANCE  WITH  THE  TERMS  OF  SUCH LICENSE AND WITH THE
$! INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR  ANY  OTHER
$! COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
$! OTHER PERSON.  NO TITLE TO AND OWNERSHIP OF  THE  SOFTWARE IS  HEREBY
$! TRANSFERRED.
$!
$! THE INFORMATION IN THIS SOFTWARE IS  SUBJECT TO CHANGE WITHOUT NOTICE
$! AND  SHOULD  NOT  BE  CONSTRUED AS  A COMMITMENT BY DIGITAL EQUIPMENT
$! CORPORATION.
$!
$! DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE  OR  RELIABILITY OF ITS
$! SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
$!
$!
$!**********************************************************************
$!
$!      KITINSTAL.COM procedure for VAX PASCAL
$!
$!**********************************************************************
$!
$!  Set up error handling.
$!
$       ON CONTROL_Y THEN GOTO CONTROL_Y_EXIT
$       ON WARNING  THEN EXIT $STATUS
$!
$!  Print debugging information if necessary.
$!
$       IF P2 THEN WRITE SYS$OUTPUT -
$          "DEBUG - KITINSTAL for ''VMI$PRODUCT' - function is ''p1'"
$!
$!  Initialize variables.
$!
$       TRUE   = 1
$       FALSE  = 0
$       PASCAL$DEBUG         == P2
$       PASCAL$ABORT_INSTALL == FALSE
$!
$!  Handle INSTALL, IVP and unsupported parameters passed by VMSINSTAL
$!
$       IF P1 .EQS. "VMI$_INSTALL" THEN GOTO INSTALL
$       IF P1 .EQS. "VMI$_IVP"     THEN GOTO IVP
$       EXIT VMI$_UNSUPPORTED
$!
$! *---------*
$! * INSTALL *
$! *---------*
$!
$ INSTALL:
$!
$!  Set up error handling.
$!
$       ON CONTROL_Y THEN GOTO INSTALL_CONTROL_Y
$       ON WARNING   THEN GOTO INSTALL_ERROR
$!
$!  Print initial comment.
$!
$       WRITE SYS$OUTPUT " "
$       WRITE SYS$OUTPUT " "
$       WRITE SYS$OUTPUT "      *-----------------------------------------*"
$       WRITE SYS$OUTPUT "      *    Installation Command Procedure for   *"
$       WRITE SYS$OUTPUT "      *             VAX PASCAL V3.6             *"
$       WRITE SYS$OUTPUT "      *-----------------------------------------*"
$       WRITE SYS$OUTPUT " "
$!
$ VERIFY_VMS_VERSION:
$!
$! Establish error-handler in case we are on a Pre-V4 system without VMI$VMS_VERSION
$!
$       ON ERROR THEN GOTO BAD_VMS_VERSION      
$!
$! VAX PASCAL V3.6 requires VMS V4.4 or greater
$!
$       VMI$REQUIRED == "044"
$!
$! Assume failure
$!
$       PASCAL$VMS == 0
$!
$! Trim off RELASED, UPGRADE, or UPDATE keyword
$!
$       VMI_TYPE = F$ELEMENT(0,",",VMI$VMS_VERSION)
$       VMI_TYPE = F$ELEMENT(0," ",VMI_TYPE)    ! Ignore FT if there
$!
$! Determine VMS version number 
$!
$       VMI_VERSION = F$ELEMENT(1,",",VMI$VMS_VERSION)
$!
$! If UPGRADE, version number is "meaningless"
$!
$       IF VMI_TYPE .NES. "UPGRADE" THEN GOTO CONTINUE_VERSION_CHECK
$!
$! Type is UPGRADE, just assume V4.4 or greater and hold our breath
$!
$       VMI$CALLBACK MESSAGE I UPGRDVMS -
           "Assuming VMS version is V4.4 or greater"
$       GOTO VERIFY_VMS_VERSION_END
$!
$ CONTINUE_VERSION_CHECK:
$!
$! Compare the current version string with our requirement
$!
$       IF F$EXTR(0,3,VMI_VERSION) .GES. F$EXTR(0,3,VMI$REQUIRED) -
         THEN PASCAL$VMS == 1
$!
$! Check result of comparison
$!
$       IF PASCAL$VMS THEN GOTO VERIFY_VMS_VERSION_END
$!
$ BAD_VMS_VERSION:
$       VMI$CALLBACK MESSAGE E BADVMS1 -
           "This kit requires VMS V4.4 (or later) for correct installation."
$       VMI$CALLBACK MESSAGE E BADVMS2 -
           "Please install VMS V4.4 (or later) before installing VAX PASCAL."
$!
$! Don't finish the installation.
$!
$       PASCAL$ABORT_INSTALL == TRUE 
$!
$ VERIFY_VMS_VERSION_END:
$!
$! Restore old error handler
$!
$       ON ERROR THEN GOTO INSTALL_ERROR
$!
$       IF PASCAL$DEBUG THEN WRITE SYS$OUTPUT -
           "DEBUG - Finished VMS version check"
$!  
$!  Check for enough free blocks on system disk.  
$!
$ CHECK_NET_UTILIZATION:
$!
$       VMI$CALLBACK CHECK_NET_UTILIZATION PASCAL$ 2000
$!
$! If enough then continue with installation
$!
$       IF PASCAL$ THEN GOTO CHECK_NET_UTILIZATION_END
$!
$! Not enough disk space present
$!
$       VMI$CALLBACK MESSAGE E NOSPACE1 -
           "System disk does not contain enough free blocks to install"
$       VMI$CALLBACK MESSAGE E NOSPACE2 -
           "VAX PASCAL.  VAX PASCAL requires 2000 free blocks."
$       PASCAL$ABORT_INSTALL == TRUE
$!
$ CHECK_NET_UTILIZATION_END:
$!
$       IF PASCAL$DEBUG THEN WRITE SYS$OUTPUT -
           "DEBUG - Finished net utilization check"
$!
$! Shall we contine this installation?
$!
$       IF PASCAL$ABORT_INSTALL THEN GOTO INSTALL_TERMINATE
$!
$! Set safety mode with peak block usage
$!
$       VMI$CALLBACK SET SAFETY CONDITIONAL 4000
$!
$! Establish PURGE and IVP flags
$!
$       WRITE SYS$OUTPUT " "
$       VMI$CALLBACK SET PURGE NO
$       VMI$CALLBACK SET PURGE ASK
$       IF PASCAL$DEBUG THEN WRITE SYS$OUTPUT -
$           "DEBUG - Purge flag has been set"
$!
$       VMI$CALLBACK SET IVP YES
$       IF PASCAL$DEBUG THEN WRITE SYS$OUTPUT -
           "DEBUG - Verification flag has been set"
$!
$! Provide release notes.  The user may have extracted them with
$! "OPTIONS N" on the VMSINSTAL command line, but I don't know...
$!
$       TYPE SYS$INPUT


    This kit contains a file summarizing the new features, changes,
    restrictions, and compatibility issues in this release of VAX 
    PASCAL.  This file is named PASCAL036.RELEASE_NOTES and is
    placed in SYS$HELP:.  

    This file contains information valuable to VAX PASCAL programmers.  
    Please inform your user community of this file's existence.

$!
$!  If all is fine so far then continue else goto INSTALL_FINISH.
$!
$ INSTALL_TERMINATE:
$       IF .NOT. PASCAL$ABORT_INSTALL THEN GOTO INSTALL_TERMINATE_END
$       VMI$CALLBACK MESSAGE E RETRY1 -
           "Please correct the reported problem(s) before attempting"
$       VMI$CALLBACK MESSAGE E RETRY2 -
           "to install VAX PASCAL."
$       PASCAL$STATUS == VMI$_FAILURE
$       GOTO INSTALL_FINISH
$ INSTALL_TERMINATE_END:
$!
$       TYPE SYS$INPUT


    All questions regarding the installation have now been asked.  
    The installation of VAX PASCAL V3.6 will now continue for 
    approximately 5 to 120 minutes depending on your configuration.

$!
$! Unload the second saveset from the kit
$!
$       VMI$CALLBACK RESTORE_SAVESET B
$!
$!  Decompress the "source" files
$!
$       LIBRARIAN/TEXT/EXTRACT=LIBDEF/OUTPUT=VMI$KWD:LIBDEF.PAS         VMI$KWD:PASCALSRC.TLB
$       LIBRARIAN/TEXT/EXTRACT=MTHDEF/OUTPUT=VMI$KWD:MTHDEF.PAS         VMI$KWD:PASCALSRC.TLB
$       LIBRARIAN/TEXT/EXTRACT=PASCALCLD/OUTPUT=VMI$KWD:PASCAL.CLD      VMI$KWD:PASCALSRC.TLB
$       LIBRARIAN/TEXT/EXTRACT=PASCALHLP/OUTPUT=VMI$KWD:PASCAL.HLP      VMI$KWD:PASCALSRC.TLB
$       LIBRARIAN/TEXT/EXTRACT=PASCTEST/OUTPUT=VMI$KWD:PASCTEST.PAS     VMI$KWD:PASCALSRC.TLB
$       LIBRARIAN/TEXT/EXTRACT=PASDEF/OUTPUT=VMI$KWD:PASDEF.PAS         VMI$KWD:PASCALSRC.TLB
$       LIBRARIAN/TEXT/EXTRACT=PASSTATUS/OUTPUT=VMI$KWD:PASSTATUS.PAS   VMI$KWD:PASCALSRC.TLB
$       LIBRARIAN/TEXT/EXTRACT=SIGDEF/OUTPUT=VMI$KWD:SIGDEF.PAS         VMI$KWD:PASCALSRC.TLB
$       LIBRARIAN/TEXT/EXTRACT=PASCALFDL/OUTPUT=VMI$KWD:PASCAL.FDL      VMI$KWD:PASCALSRC.TLB
$!
$       DELETE VMI$KWD:PASCALSRC.TLB.*
$!
$!
$!  Decompress the EXE files and convert them back to 512 byte fixed records
$!
$       LIBRARIAN/TEXT/EXTRACT=PASCALEXE/OUTPUT=VMI$KWD:PASCAL.EXE      VMI$KWD:PASCALEXE.TLB
$       CONVERT/FDL=VMI$KWD:PASCAL.FDL VMI$KWD:PASCAL.EXE       VMI$KWD:PASCAL.EXE
$       PURGE VMI$KWD:PASCAL.EXE
$!
$       LIBRARIAN/TEXT/EXTRACT=PASCALER1/OUTPUT=VMI$KWD:PASCALER1.EXE   VMI$KWD:PASCALEXE.TLB
$       CONVERT/FDL=VMI$KWD:PASCAL.FDL VMI$KWD:PASCALER1.EXE    VMI$KWD:PASCALER1.EXE
$       PURGE VMI$KWD:PASCALER1.EXE
$!
$       LIBRARIAN/TEXT/EXTRACT=PASCALER2/OUTPUT=VMI$KWD:PASCALER2.EXE   VMI$KWD:PASCALEXE.TLB
$       CONVERT/FDL=VMI$KWD:PASCAL.FDL VMI$KWD:PASCALER2.EXE    VMI$KWD:PASCALER2.EXE
$       PURGE VMI$KWD:PASCALER2.EXE
$!
$       DELETE VMI$KWD:PASCALEXE.TLB.*
$!
$!  Copy files from install kit to current directory.
$!
$       VMI$CALLBACK PROVIDE_FILE  PASCAL$ LIBDEF.PAS                   VMI$ROOT:[SYSLIB]
$       VMI$CALLBACK PROVIDE_FILE  PASCAL$ MTHDEF.PAS                   VMI$ROOT:[SYSLIB]
$       VMI$CALLBACK PROVIDE_FILE  PASCAL$ PASDEF.PAS                   VMI$ROOT:[SYSLIB]
$       VMI$CALLBACK PROVIDE_FILE  PASCAL$ PASSTATUS.PAS                VMI$ROOT:[SYSLIB]
$       VMI$CALLBACK PROVIDE_FILE  PASCAL$ SIGDEF.PAS                   VMI$ROOT:[SYSLIB]
$       VMI$CALLBACK PROVIDE_FILE  PASCAL$ PASCAL036.RELEASE_NOTES      VMI$ROOT:[SYSHLP]
$       VMI$CALLBACK PROVIDE_IMAGE PASCAL$ PASCAL.EXE                   VMI$ROOT:[SYSEXE]
$       VMI$CALLBACK PROVIDE_IMAGE PASCAL$ PASCALER1.EXE                VMI$ROOT:[SYSMSG]
$       VMI$CALLBACK PROVIDE_IMAGE PASCAL$ PASCALER2.EXE                VMI$ROOT:[SYSMSG]
$!
$!  Build PASCAL command line.
$!
$ BUILD_COMMAND_LINE:
$!
$       VMI$CALLBACK PROVIDE_DCL_COMMAND PASCAL.CLD
$       IF PASCAL$DEBUG THEN WRITE SYS$OUTPUT -
           "DEBUG - Finished building PASCAL command line"
$!
$!
$!  Replace PASCAL HELP command in the LIBRARY.
$!
$       VMI$CALLBACK PROVIDE_DCL_HELP PASCAL.HLP
$       IF PASCAL$DEBUG THEN WRITE SYS$OUTPUT -
           "DEBUG - Finished replacing PASCAL HELP command in the LIBRARY"
$!
$       PASCAL$STATUS == VMI$_SUCCESS
$       IF PASCAL$DEBUG THEN WRITE SYS$OUTPUT -
           "DEBUG - Install had normal finish"
$       TYPE SYS$INPUT

  Your VMS system will now be updated to include the following new and 
  modified files:

    SYS$HELP:HELPLIB.HLB                   [modified]
    SYS$HELP:PASCAL036.RELEASE_NOTES       [new]
    SYS$LIBRARY:DCLTABLES.EXE              [modified]
    SYS$LIBRARY:LIBDEF.PAS                 [new]
    SYS$LIBRARY:MTHDEF.PAS                 [new]
    SYS$LIBRARY:PASDEF.PAS                 [new]
    SYS$LIBRARY:PASSTATUS.PAS              [new]
    SYS$LIBRARY:SIGDEF.PAS                 [new]
    SYS$MESSAGE:PASCALER1.EXE              [new]
    SYS$MESSAGE:PASCALER2.EXE              [new]
    SYS$SYSTEM:PASCAL.EXE                  [new]

$       GOTO INSTALL_FINISH
$!
$ INSTALL_CONTROL_Y:
$       VMI$CALLBACK CONTROL_Y
$       PASCAL$STATUS == 0 + $STATUS
$       IF PASCAL$DEBUG THEN WRITE SYS$OUTPUT -
           "DEBUG - Install received a Control Y"
$       GOTO INSTALL_FINISH
$!
$ INSTALL_ERROR:
$       PASCAL$STATUS == 0 + $STATUS
$       IF PASCAL$DEBUG THEN WRITE SYS$OUTPUT -
           "DEBUG - Install flagged a previous error"
$!
$ INSTALL_FINISH:
$       ON WARNING   THEN CONTINUE
$       ON CONTROL_Y THEN CONTINUE
$!
$       IF .NOT. PASCAL$STATUS THEN WRITE SYS$OUTPUT -
           "VAX PASCAL Installation aborted"
$!
$       EXIT PASCAL$STATUS
$!
$! *--------------------------------*
$! * End of VAX PASCAL Installation *
$! *--------------------------------*
$!
$! *-----*
$! * IVP *
$! *-----*
$!
$ IVP:
$!
$!  Set up error handling.
$!
$       ON WARNING   THEN GOTO IVP_ERROR
$       ON CONTROL_Y THEN GOTO IVP_CONTROL_Y
$!
$!  Print initial comments.
$!
$       WRITE SYS$OUTPUT " "
$       WRITE SYS$OUTPUT " "
$       WRITE SYS$OUTPUT "      *-----------------------------------------*"
$       WRITE SYS$OUTPUT "      * Installation Verification Procedure for *"
$       WRITE SYS$OUTPUT "      *            VAX PASCAL V3.6              *"
$       WRITE SYS$OUTPUT "      *-----------------------------------------*"
$       WRITE SYS$OUTPUT " "
$       WRITE SYS$OUTPUT " "
$!
$       DEFINE/USER PASCAL      VMI$ROOT:[SYSEXE]PASCAL.EXE;
$       PASCAL/LIST/OBJECT      VMI$KWD:PASCTEST.PAS
$       LINK/NOTRACE            VMI$KWD:PASCTEST.OBJ
$       RUN                     VMI$KWD:PASCTEST.EXE
$!
$       IF PASCAL$DEBUG THEN SYS$OUTPUT -
           "DEBUG - Finished IVP"  
$!
$       PASCAL$STATUS == VMI$_SUCCESS
$       IF PASCAL$DEBUG THEN WRITE SYS$OUTPUT -
           "DEBUG - IVP had a normal finish"
$       GOTO IVP_FINISH
$!
$ IVP_CONTROL_Y:
$       PASCAL$STATUS == VMI$_FAILURE
$       IF PASCAL$DEBUG THEN WRITE SYS$OUTPUT -
           "DEBUG - IVP received a Control Y"
$       GOTO IVP_FINISH
$!
$ IVP_ERROR:
$       PASCAL$STATUS == 0 + $STATUS
$       IF PASCAL$DEBUG THEN WRITE SYS$OUTPUT -
           "DEBUG - IVP flagged a previous error"
$       
$!
$ IVP_FINISH:
$       ON WARNING   THEN CONTINUE
$       ON CONTROL_Y THEN CONTINUE
$       EXIT PASCAL$STATUS
$!
$! *--------------------------------------------------------*
$! * End of VAX PASCAL Installation Verification Procedure. *
$! *--------------------------------------------------------*
$!
$ CONTROL_Y_EXIT:
$       VMI$CALLBACK CONTROL_Y
$       EXIT VMI$_FAILURE
